/**********************************
 * @Author: Qi Hang
 * @LastEditor: Qi Hang
 * @LastEditTime: 20:23:59, 星期日 18, 五月 2025
 * @Email: wqwzxwzx@gmail.com
 * Copyright © 2023 Qi Hang | https://hanghang.xyz
 **********************************/

import { defaultLayout, defaultPrimaryColor, naiveThemeOverrides } from "@/settings";
import { generate, getRgbStr } from "@arco-design/color";
import { useDark } from "@vueuse/core";
import { defineStore } from "pinia";

export const useAppStore = defineStore("app", {
  state: () => ({
    collapsed: false,
    isDark: useDark(),
    layout: defaultLayout,
    primaryColor: defaultPrimaryColor,
    naiveThemeOverrides,
  }),
  actions: {
    switchCollapsed() {
      this.collapsed = !this.collapsed;
    },
    setCollapsed(b) {
      this.collapsed = b;
    },
    toggleDark() {
      this.isDark = !this.isDark;
    },
    setLayout(v) {
      this.layout = v;
    },
    setPrimaryColor(color) {
      this.primaryColor = color;
    },
    setThemeColor(color = this.primaryColor, isDark = this.isDark) {
      const colors = generate(color, {
        list: true,
        dark: isDark,
      });
      document.body.style.setProperty("--primary-color", getRgbStr(colors[5]));
      this.naiveThemeOverrides.common = Object.assign(this.naiveThemeOverrides.common || {}, {
        primaryColor: colors[5],
        primaryColorHover: colors[4],
        primaryColorSuppl: colors[4],
        primaryColorPressed: colors[6],
      });
    },
  },
  persist: {
    pick: ["collapsed", "layout", "primaryColor", "naiveThemeOverrides"],
    storage: sessionStorage,
  },
});
